/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sisos.DAO;

import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import sisos.Modelo.Servico;
import sisos.util.HibernateUtil;
import sisos.util.fabricaConexao;

/**
 *
 * @author FLAVIOFAV
 */
public class ServicoDAO implements IServicoDAO{
    
    @Override
    public void atualizar(Servico servico) {
        //session = fabricaConexao.getInstance();
        Transaction tx = null;
        
        try{
            //tx = session.beginTransaction();
            //session.update(servico);
            tx.commit();
        } catch (HibernateException e) {
            e.printStackTrace();
            tx.rollback();
        } finally {
            //session.close();
        }
    }

    @Override
    public void excluir(Servico servico) {
        //session = fabricaConexao.getInstance();
        Transaction tx = null;
        
        try{
            //tx = session.beginTransaction();
            //session.delete(servico);
            tx.commit();
        } catch(HibernateException e){
            e.printStackTrace();
            tx.rollback();
        } finally {
            //session.close();
        }
    }

    @Override
    public void salvar(Servico servico) {
        Session sessao = null;
        Transaction transacao = null;
        
        try{
            sessao = HibernateUtil.getSessionFactory().openSession();
            transacao = sessao.beginTransaction();
            sessao.save(servico);
            transacao.commit();
        } catch(HibernateException e){
            e.printStackTrace();
            transacao.rollback();
        } finally{
            try {
                sessao.close();
            } catch(Throwable e){
                System.out.println("Erro ao fechar operação de inserção. Mensagem: "+e.getMessage());
            }
        }
    }

    @Override
    public List todosServicos() {
        Session sessao = null;
        Transaction transacao = null;
        Query consulta = null;
        List<Servico> resultado = null;
        try{
            sessao = HibernateUtil.getSessionFactory().openSession();
            transacao = sessao.beginTransaction();
            consulta = sessao.createQuery("from Servico");
            resultado = consulta.list();
            transacao.commit();
            return resultado;
        } catch (HibernateException e){
            System.out.println("Não foi possível listar os contatos: "+e.getMessage());
            throw new HibernateException(e);
        } finally{
            try{
                sessao.close();
            } catch (Throwable e){
                System.out.println("Erro ao fechar operação de consulta: "+e.getMessage());
            }
        }
    }

    @Override
    public Servico procurarServico() {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    
}
